/**
 * 封装token的签发和解析函数、
 * 使用第三方中间件：jsonwebtoken
 */
const jwt = require("jsonwebtoken");

//密钥，用密钥生成token，解密时要使用同样的密钥
var jwtSecret = "111";

//生成token（签发token）
var setToken=(uname,uid)=>{
    return new Promise((resolve,reject)=>{//第一个是执行成功，第二个是执行失败
        //创建token
        const token = jwt.sign({uname:uname,fg:uid},jwtSecret,
            {
                expiresIn:"50h",//1h表示过期时间为一小时
            });
        //签发token 
        resolve(token);
    })
}

//验证token（解析token）
var getToken = (token)=>{
    return new Promise((resolve,reject)=>{
        if(token){
            //解析token,用密钥解析token携带的载荷,因为前端在token手动添加了'Bearer ';
            var info = jwt.verify(token.split(" ")[1],jwtSecret);
            resolve(info);
        }else{
            reject({error:"token为空"});
        }
    })
}

module.exports={
    setToken,
    getToken
}